package com.lyf.scm.plan.domain.remote.bigdata;

import com.lyf.scm.plan.domain.remote.bigdata.dto.*;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;

/**
 * description:
 *
 * @author: haodong
 * @data: 2020/9/4 19:45
 */
@FeignClient(name = "CPFR-CORE-SERVER")
public interface CprfCoreRemote {
    /**
     * 分页获取销售预测数据（周）
     *
     * @param bigDataGeneralQueryBaseDTO
     * @return {@link BigDataResponse< SalePredictDayDTO >}
     **/
    @PostMapping("/v1/weekPredictSale")
    BigDataResponse<SalePredictWeekDTO> getSalePredict(@RequestBody BigDataGeneralQueryBaseDTO bigDataGeneralQueryBaseDTO);

    /**
     * 分页获取销售预测数据（日）
     *
     * @param bigDataGeneralQueryBaseDTO
     * @return {@link BigDataResponse< SalePredictDayDTO >}
     **/
    @PostMapping("/v1/dayPredictSale")
    BigDataResponse<SalePredictDayDTO> getDaySalePredict(@RequestBody BigDataGeneralQueryBaseDTO bigDataGeneralQueryBaseDTO);

    /**
     * 分页获取安全库存数据（日）
     *
     * @param bigDataGeneralQueryBaseDTO
     * @return {@link BigDataResponse< SalePredictDayDTO >}
     **/
    @PostMapping("/v1/dayInventoryPlan")
    BigDataResponse<SafetyStockDTO> getDaySafetyStock(@RequestBody BigDataGeneralQueryBaseDTO bigDataGeneralQueryBaseDTO);

    /**
     * 日补货预估结果查询
     *
     * @param bigDataGeneralQueryBaseDTO
     * @return {@link BigDataResponse<BigDataGeneralInfoDTO>}
     **/
    @PostMapping("/v1/dayPredictReplenishment")
    BigDataResponse<BigDataGeneralInfoDTO> getDayPredictReplenishment(@RequestBody BigDataGeneralQueryBaseDTO bigDataGeneralQueryBaseDTO);

    /**
     * 查询13周销量预估结果
     * @param query
     * @return
     */
    @PostMapping("/v1/thirteenWeekPredictSale")
    BigDataResponse<TiSsStockResultDTO> thirteenWeekPredictSale(@RequestBody TiSsStockQueryDTO query);
}
